package com.example.clock.basicClass;

import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.widget.Toast;

import androidx.core.content.ContextCompat;

import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;

public class HelpFunc {
    public static boolean checkForDateFormat(Context x, String s){
        boolean n = s.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$");
        if(!n){
            Toast.makeText(x, "错误的日期样式", Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }
    public static boolean checkFortimeFormat(Context x, String s){

        boolean n = s.matches("^\\d{4}:\\d{1,2}:\\d{1,2}$");
        if(!n){
            Toast.makeText(x, "错误的时间样式", Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }

    public static boolean checkForNullFormat(Context x, String s){

        boolean n = s.matches("^\\s*$");
        if(n){
            Toast.makeText(x, "字符串不能为空！", Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }


    // 检查写入外部存储的权限
    public static boolean checkWriteExternalStoragePermission(Context context) {
        // 如果是 Android 10 及以上版本，使用新的存储权限检查方式
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            return ContextCompat.checkSelfPermission(
                    context,
                    android.Manifest.permission.WRITE_EXTERNAL_STORAGE
            ) == PackageManager.PERMISSION_GRANTED;
        } else {
            // 如果是 Android 9 及以下版本，直接检查写入外部存储的权限
            return ContextCompat.checkSelfPermission(
                    context,
                    android.Manifest.permission.WRITE_EXTERNAL_STORAGE
            ) == PackageManager.PERMISSION_GRANTED;
        }
    }


    //过滤空元素，返回String数组
    public static String[] deleteEmptyElementinArray(String[] s){
        String[] filteredArray = Arrays.stream(s)
                .filter(str -> !str.isEmpty())
                .toArray(String[]::new);
        return filteredArray;
    }

    public static String[] completeArray(String[] s1/*s1是要保持顺序，在其后面添加s1中没有的s2的元素*/, String[] s2) {
        Set<String> resultSet = new LinkedHashSet<>();

        // 添加 s1 中的元素，保持顺序
        for (String element : s1) {
            resultSet.add(element);
        }

        // 添加 s2 中存在但 s1 中不存在的元素
        for (String element : s2) {
            if (!resultSet.contains(element)) {
                resultSet.add(element);
            }
        }

        // 转换为数组
        return resultSet.toArray(new String[0]);
    }
    //比较xx-xx-xx之间相差的分钟数；      1-2
    public static int differenceBetweenTime(String Bigtime,String Smalltime){//1 - 2的分钟数
        String[] s1 = Bigtime.split(":");
        String[] s2 = Smalltime.split(":");
        int hours = Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
        int minites = Integer.parseInt(s1[1]) - Integer.parseInt(s2[1]) + hours*60;
        return minites;
    };
}

